import datetime
import os
import re

from sam import export_dir_path
from sam.util.dateUtil import get_now_str

UNLESS_FILE_HEAD = [
    "查  企  业，就 上 企 查 查 \n 联系电话：400-928-2212",
    " "
]


def assert_is_expect_file_type(file_path: str, *expect_file_type_list: str):
    """ 判断文件是否属于期望的文件类型  """
    for file_type in expect_file_type_list:
        if file_path.endswith(file_type):
            return True
    return False


def get_file_name_from_path(file_path):
    """ 从文件路径中获取文件名 """
    pattern = re.compile("([\w)）&（(-. 【】[\]]|[\u4e00-\u9fa5])+\.\w+$")
    s = re.search(pattern, file_path)
    if s:
        return s.group()
    else:
        return datetime.datetime.now().isoformat()


def get_file_name_from_path_exclude_file_type(file_path):
    """ 从文件路径中获取文件名 """
    pattern = re.compile("([\w)）&（(-. 【】[\]]|[\u4e00-\u9fa5])+\.\w+$")
    s = re.search(pattern, file_path)
    if s:
        file_name = s.group()
        pattern = re.compile("\.[^.]+?$")
        return re.sub(pattern, "", file_name)


def get_file_path_list_by_dir_path(dir_path):
    """ 从文件目录中获取文件列表 """
    file_path_list = []
    ls = os.listdir(dir_path)
    for i in range(len(ls)):
        path = os.path.join(dir_path, ls[i])
        file_path_list.append(path)
    return file_path_list


def delete_files_by_dir_path(dir_path: str):
    """ 根据文件夹路径删除文件目录下面的文件 """
    # 列出目录下的文件
    files = os.listdir(dir_path)
    print(f"将要删除 目录 {dir_path} 下面的  {len(files)} 个文件")
    for file in files:
        file_path = f"{dir_path}/{file}"
        if os.path.exists(file_path):
            # 删除文件
            os.remove(file_path)


def setup_export_file_path(export_dir_base_path: str = export_dir_path
                           , export_file_name: str = "export"
                           , prefix=None
                           , suffix=None
                           , file_type: str = "csv"
                           , optional: str = "single"
                           ) -> str:
    """ 设置导出文件路径 """
    if prefix and suffix:
        if "single" == optional:
            return f"{export_dir_base_path}{os.sep}{export_file_name}_({prefix}_{suffix}).{file_type}"
        else:
            return f"{export_dir_base_path}{os.sep}{export_file_name}_({prefix}_{suffix})_{get_now_str()}.{file_type}"
    elif prefix:
        if "single" == optional:
            return f"{export_dir_base_path}{os.sep}{export_file_name}_{prefix}.{file_type}"
        else:
            return f"{export_dir_base_path}{os.sep}{export_file_name}_{prefix}_{get_now_str()}.{file_type}"
    elif suffix:
        if "single" == optional:
            return f"{export_dir_base_path}{os.sep}{export_file_name}_{suffix}.{file_type}"
        else:
            return f"{export_dir_base_path}{os.sep}{export_file_name}_{suffix}_{get_now_str()}.{file_type}"
    else:
        if "single" == optional:
            return f"{export_dir_base_path}{os.sep}{export_file_name}.{file_type}"
        else:
            return f"{export_dir_base_path}{os.sep}{export_file_name}_{get_now_str()}.{file_type}"


if __name__ == "__main__":
    f = setup_export_file_path(export_dir_path, "ok", 100, 200, "csv")
    print(f)
